home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / if_packet.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  3KB  |  103 lines

  1. #ifndef __LINUX_IF_PACKET_H
  2. #define __LINUX_IF_PACKET_H
  3.  
  4. struct sockaddr_pkt
  5. {
  6.     unsigned short spkt_family;
  7.     unsigned char spkt_device[14];
  8.     unsigned short spkt_protocol;
  9. };
  10.  
  11. struct sockaddr_ll
  12. {
  13.     unsigned short    sll_family;
  14.     unsigned short    sll_protocol;
  15.     int        sll_ifindex;
  16.     unsigned short    sll_hatype;
  17.     unsigned char    sll_pkttype;
  18.     unsigned char    sll_halen;
  19.     unsigned char    sll_addr[8];
  20. };
  21.  
  22. /* Packet types */
  23.  
  24. #define PACKET_HOST        0        /* To us        */
  25. #define PACKET_BROADCAST    1        /* To all        */
  26. #define PACKET_MULTICAST    2        /* To group        */
  27. #define PACKET_OTHERHOST    3        /* To someone else     */
  28. #define PACKET_OUTGOING        4        /* Outgoing of any type */
  29. /* These ones are invisible by user level */
  30. #define PACKET_LOOPBACK        5        /* MC/BRD frame looped back */
  31. #define PACKET_FASTROUTE    6        /* Fastrouted frame    */
  32.  
  33. /* Packet socket options */
  34.  
  35. #define PACKET_ADD_MEMBERSHIP        1
  36. #define PACKET_DROP_MEMBERSHIP        2
  37. #define PACKET_RECV_OUTPUT        3
  38. /* Value 4 is still used by obsolete turbo-packet. */
  39. #define PACKET_RX_RING            5
  40. #define PACKET_STATISTICS        6
  41. #define PACKET_COPY_THRESH        7
  42.  
  43. struct tpacket_stats
  44. {
  45.     unsigned int    tp_packets;
  46.     unsigned int    tp_drops;
  47. };
  48.  
  49. struct tpacket_hdr
  50. {
  51.     unsigned long    tp_status;
  52. #define TP_STATUS_KERNEL    0
  53. #define TP_STATUS_USER        1
  54. #define TP_STATUS_COPY        2
  55. #define TP_STATUS_LOSING    4
  56. #define TP_STATUS_CSUMNOTREADY    8
  57.     unsigned int    tp_len;
  58.     unsigned int    tp_snaplen;
  59.     unsigned short    tp_mac;
  60.     unsigned short    tp_net;
  61.     unsigned int    tp_sec;
  62.     unsigned int    tp_usec;
  63. };
  64.  
  65. #define TPACKET_ALIGNMENT    16
  66. #define TPACKET_ALIGN(x)    (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
  67. #define TPACKET_HDRLEN        (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
  68.  
  69. /*
  70.    Frame structure:
  71.  
  72.    - Start. Frame must be aligned to TPACKET_ALIGNMENT=16
  73.    - struct tpacket_hdr
  74.    - pad to TPACKET_ALIGNMENT=16
  75.    - struct sockaddr_ll
  76.    - Gap, chosen so that packet data (Start+tp_net) alignes to TPACKET_ALIGNMENT=16
  77.    - Start+tp_mac: [ Optional MAC header ]
  78.    - Start+tp_net: Packet data, aligned to TPACKET_ALIGNMENT=16.
  79.    - Pad to align to TPACKET_ALIGNMENT=16
  80.  */
  81.  
  82. struct tpacket_req
  83. {
  84.     unsigned int    tp_block_size;    /* Minimal size of contiguous block */
  85.     unsigned int    tp_block_nr;    /* Number of blocks */
  86.     unsigned int    tp_frame_size;    /* Size of frame */
  87.     unsigned int    tp_frame_nr;    /* Total number of frames */
  88. };
  89.  
  90. struct packet_mreq
  91. {
  92.     int        mr_ifindex;
  93.     unsigned short    mr_type;
  94.     unsigned short    mr_alen;
  95.     unsigned char    mr_address[8];
  96. };
  97.  
  98. #define PACKET_MR_MULTICAST    0
  99. #define PACKET_MR_PROMISC    1
  100. #define PACKET_MR_ALLMULTI    2
  101.  
  102. #endif
  103.